package Threads.Jvm.ByteCode;


//需要理解这段代码在jvm栈帧中的执行过程
/*
         0: bipush        10         将10压入到操作数栈
         2: istore_1                 将10存储到局部变量表第一个槽位
         3: ldc           #3         从常量池中获取int 32768到操作数栈      // int 32768
         5: istore_2                 将32678存储到第二个槽位
         6: iload_1                  将第一个槽位的数加载到操作数栈
         7: iload_2                  将第二个槽位的数加载到操作数栈
         8: iadd                     相加得到结果
         9: istore_3                 将结果存入到第三个槽位
        10: getstatic     #4         从常量池中获取对象的引用到操作数栈        // Field java/lang/System.out:Ljava/io/PrintStream;
        13: iload_3                  将槽3中的数加载到操作数栈
        14: invokevirtual #5         从常量池中，定位到pintln方法，生成新的栈帧，传递参数，执行新栈帧中的操作         // Method java/io/PrintStream.println:(I)V

 */
public class Demo1 {
    public static void main(String[] args) {
        int a=10;
        int b=Short.MAX_VALUE+1;
        int c=a+b;
        System.out.println(c);
    }
}
